//
//  HSYBaseTableViewController.h
//  高仿暴走斗图
//
//  Created by huangsongyao on 16/3/4.
//  Copyright © 2016年 huangsongyao. All rights reserved.
//

#import "HSYBaseRefleshViewController.h"

@interface HSYBaseTableViewController : HSYBaseRefleshViewController<UITableViewDelegate, UITableViewDataSource>

@property (nonatomic, strong) UITableView *tableView;
@property (nonatomic, copy) void(^selectIndexPathCell)(id tableViewCell, NSIndexPath *indexPath);
/**
 *  添加默认的tableView
 */
- (void)createTableView;

/**
 *  创建一个tableView,添加层默认为self.view,frame为self.view的bounds
 *
 *  @param hidLine       是否隐藏tableView的系统分割线条
 *  @param scrollEnabled 是否允许滚动
 *  @param style         tableView的风格
 */
- (void)createTableViewInViewWithIsHidLine:(BOOL)hidLine isScrollEnabled:(BOOL)scrollEnabled style:(UITableViewStyle)style;

/**
 *  创建一个tableView
 *
 *  @param parentView    tableView的父视图
 *  @param rect          tableView的frame
 *  @param hidLine       tableView是否隐藏系统的分割线
 *  @param scrollEnabled tableView是否允许滚动
 *  @param style         tableView的风格
 */
- (void)createTableViewInParentView:(UIView *)parentView rect:(CGRect)rect isHidLine:(BOOL)hidLine isScrollEnabled:(BOOL)scrollEnabled style:(UITableViewStyle)style;

/**
 *  通过cell获取对应的indexPath
 *
 *  @param cell         cell对象
 *  @param tableView    tableView对象
 *
 *  @return NSIndexPath对象
 */
- (NSIndexPath *)getTableViewIndexPathForCell:(UITableViewCell *)cell withTableView:(UITableView *)tableView;

/**
 *  通过indexPath获取对应的cell
 *
 *  @param indexPath indexPath对象
 *  @param tableView tableView对象
 *
 *  @return UITableViewCell对象
 */
- (UITableViewCell *)getTableViewCellForIndexPath:(NSIndexPath *)indexPath withTableView:(UITableView *)tableView;

/**
 *  删除行
 *
 *  @param indexPaths 要删除的行的indexPath集合
 *  @param animation  删除动画类型
 *  @param tableView  tableView对象
 */
- (void)deleteRowsAtIndexPaths:(NSArray<NSIndexPath *> *)indexPaths withRowDeleteAnimation:(UITableViewRowAnimation)animation tableView:(UITableView *)tableView;


/**
 *  添加下拉刷新
 */
- (void)addPullDown;

/**
 *  下拉刷新动作
 */
- (void)pullDown;

/**
 *  停止下拉动作
 */
- (void)stopPullDown;



/**
 *  添加上拉刷新
 */
- (void)addPullUp;

/**
 *  上拉刷新动作
 */
- (void)pullUp;

/**
 *  停止上拉动作
 */
- (void)stopPullUp;


@end
